package operator.filter;

import io.reactivex.Observable;
import util.RxJavaHelper;

class LastOperator {

    public static void main(String[] args) {
//        last1();
//        last2();
        last3();
    }


    /**
     * 取出最后一个元素，如果没有发出任何元素则发出指定元素
     */
    static void last1(){
//        Observable.just(1, 2, 3)
//                .last(5)
//                .subscribe(RxJavaHelper.getSingleConsumer());
        Observable.empty()
                .last(5)
                .subscribe(RxJavaHelper.getSingleConsumer());
    }

    /**
     * 取出发射的最后一个元素，如果未发出则结束事件
     */
    static void last2(){
        Observable.just(1, 2, 3)
                .lastElement()
                .subscribe(RxJavaHelper.getMaybeConsumer());
        Observable.empty()
                .lastElement()
                .subscribe(RxJavaHelper.getMaybeConsumer());
    }

    /**
     * 取出发射的最后一个元素，如果未发出则发出错误事件
     */
    static void last3(){
        Observable.just(1, 2, 3)
                .lastOrError()
                .subscribe(RxJavaHelper.getSingleConsumer());
        Observable.empty()
                .lastOrError()
                .subscribe(RxJavaHelper.getSingleConsumer());
    }

}
